﻿
namespace Needle.Core.Lifetime
{
    /// <summary></summary>
    public static class DefaultTrackingPolicies
    {

        private static readonly ITrackingPolicy _Transient;
        /// <summary></summary>
        public static ITrackingPolicy Transient
        {
            get { return _Transient; }
        }
        
        private static readonly ITrackingPolicy _Permanent;
        /// <summary></summary>
        public static ITrackingPolicy Permanent
        {
            get { return _Permanent; }
        }

        private static readonly ITrackingPolicy _Disposable;
        /// <summary></summary>
        public static ITrackingPolicy Disposable
        {
            get { return _Disposable; }
        }
        
        private static readonly ITrackingPolicy _NoTrackingPolicy;
        /// <summary></summary>
        public static ITrackingPolicy NoTracking
        {
            get { return _NoTrackingPolicy; }
        }
        /// <summary></summary>
        static DefaultTrackingPolicies()
        {
            _Disposable = new DisposableAttribute();
            _Permanent = new PermanentAttribute();
            _Transient = new TransientAttribute();
            _NoTrackingPolicy = new NoTrackingAtrribute();
        }
    }
}
